package parser

import (
	"NumberBase/internal/parser/ast"
	"NumberBase/internal/parser/lexer"
	"fmt"
)

// parseDropTableStatement 解析DROP TABLE语句
// 例如: DROP TABLE users
func (p *Parser) parseDropTableStatement() (*ast.DropStatement, error) {
	stmt := &ast.DropStatement{
		ObjectType: "TABLE",
	}

	// 跳过DROP
	p.nextToken()

	// 跳过TABLE
	p.nextToken()

	// 解析表名
	if !p.currTokenIs(lexer.IDENTIFIER) {
		return nil, fmt.Errorf("期望表名，但得到%s", p.currToken.Literal)
	}
	stmt.Name = p.currToken.Literal

	// 检查下一个token是否是分号(作为SQL语句结束标记)
	if p.peekTokenIs(lexer.SEMICOLON) {
		p.nextToken() // 消费分号，确认语句结束
	}
	// 如果没有分号，也允许语句结束（某些SQL环境中分号是可选的）

	return stmt, nil
}
